<?php
/**
 * Controller is the customized base controller class.
 * All controller classes for this application should extend from this base class.
 */
class Controller extends CController
{
	/**
	 * @var array context menu items. This property will be assigned to {@link CMenu::items}.
	 */
	public $menu=array(
		'services' => array('label'=>'Шиномонтаж', 'url'=>array('site/page', 'view'=>'services'), 'linkOptions'=>array('title'=>'Шиномонтаж')),
		'payment' => array('label'=>'Оплата и доставка', 'url'=>array('site/page', 'view'=>'payment'), 'linkOptions'=>array('title'=>'Оплата и доставка')),
		'customer' => array('label'=>'Покупателю', 'url'=>array('site/page', 'view'=>'customer'), 'linkOptions'=>array('title'=>'Покупателю')),
		'about' => array('label'=>'О компании', 'url'=>array('site/page', 'view'=>'about'), 'linkOptions'=>array('title'=>'О компании')),
		'news' => array('label'=>'Новости', 'url'=>array('articles/index'), 'linkOptions'=>array('title'=>'Новости')),
		'contacts' => array('label'=>'Контакты', 'url'=>array('site/page', 'view'=>'contacts'), 'linkOptions'=>array('title'=>'Контакты')),
	);
	
	public $bigmenu =array(
		'summer_tyres'=>array('label'=>'Летние шины','url'=>array('tyres/index', 'season'=>'letnie-shini'), 'linkOptions'=>array('title'=>'Шины', 'class'=>'big summer_tyres'), 'items'=>array(
			array('label'=>'Ссылка 1', 'url'=>'#'),
			array('label'=>'Ссылка 2', 'url'=>'#'),
			array('label'=>'Ссылка 3', 'url'=>'#'),
			array('label'=>'Ссылка 4', 'url'=>'#'),
		)),
		'winter_tyres'=>array('label'=>'Зимние шины','url'=>array('tyres/index', 'season'=>'zimnie-shini'), 'linkOptions'=>array('title'=>'Шины', 'class'=>'big winter_tyres'), 'items'=>array(
			array('label'=>'Ссылка 1', 'url'=>'#'),
			array('label'=>'Ссылка 2', 'url'=>'#'),
			array('label'=>'Ссылка 3', 'url'=>'#'),
			array('label'=>'Ссылка 4', 'url'=>'#'),
		)),
		'disks'=>array('label'=>'Диски','url'=>array('catalog/disks'), 'linkOptions'=>array('title'=>'Диски', 'class'=>'big disks'), 'items'=>array(
			array('label'=>'Ссылка 1', 'url'=>'#'),
			array('label'=>'Ссылка 2', 'url'=>'#'),
			array('label'=>'Ссылка 3', 'url'=>'#'),
			array('label'=>'Ссылка 4', 'url'=>'#'),
		)),
		'oils'=>array('label'=>'Масла','url'=>array('oils/index'), 'linkOptions'=>array('title'=>'Масла', 'class'=>'big oil'), 'items'=>array(
			array('label'=>'Ссылка 1', 'url'=>'#'),
			array('label'=>'Ссылка 2', 'url'=>'#'),
		)),
		'accumulators'=>array('label'=>'АКБ','url'=>array('catalog/accumulators'), 'linkOptions'=>array('title'=>'Аккумуляторы', 'class'=>'big accum'), 'items'=>array(
			array('label'=>'Ссылка 1', 'url'=>'#'),
			array('label'=>'Ссылка 2', 'url'=>'#'),
			array('label'=>'Ссылка 3', 'url'=>'#'),
		)),
	);
	
	/**
	 * @var array the breadcrumbs of the current page. The value of this property will
	 * be assigned to {@link CBreadcrumbs::links}. Please refer to {@link CBreadcrumbs::links}
	 * for more details on how to specify this property.
	 */
	public $breadcrumbs=array();
	
	
	/**
	 * Фильтры
	 */
	public function filters(){
		
		return array(
			#'loginWorkout',
			#'accessWorkout',
			'publishWidget',
			'shoppingCartWorkout',
			'selectionFormValidation',
		);
	}
	
	// Добавляю псевдоним для папки виджетов, которая находиться в папке с темой
	function filterPublishWidget($filterChain){
		Yii::setPathOfAlias('widgets' ,Yii::getPathOfAlias('webroot.themes.'.Yii::app()->theme->name.'.widgets'));
		$filterChain->run();
	}
	
	// Проверка доступа, чтобы харч не лазил
	function filterAccessWorkout($filterChain){
		if(!Yii::app()->user->checkAccess('accessToSite') && $this->getRoute() != Yii::app()->user->loginUrl[0]) {
			// запрет доступа на сайт
			Yii::app()->user->setFlash('loginError','У Вас нет доступа.');
			Yii::app()->user->loginRequired();
		}

		$filterChain->run();
	}

	// корзинка
	function filterShoppingCartWorkout($filterChain){
		if(isset($_POST['ajax']) && strpos($_POST['ajax'], 'buy-form') === 0 ) {
			$model = new BasketForm;
			echo CActiveForm::validate($model);
			Yii::app()->end();
		}
		
		if(isset($_GET['ajax']) && $_GET['ajax'] === 'basket' && $_GET['operation'] === 'clear') {
			Yii::app()->shoppingCart->clear();
		}
		
		if(isset($_POST['BasketForm'])) {
			$model = new BasketForm;
			$model->attributes = $_POST['BasketForm'];
			if($model->validate()) {
				list($class, $id) = preg_split('/_/', $model->id);
				$cart = Yii::app()->shoppingCart;
				$class = new $class;
				$cart->put($class->findByPk($id),$model->quantity);
			} else {
				echo CActiveForm::validate($model);
				Yii::app()->end();
			}
		}
		
		$filterChain->run();
	}
	
	function filterSelectionFormValidation($filterChain){
		
			$tyreSelectionForm = Yii::app()->request->getParam('TyreSelectionForm', array());
		$tyreSelection = new TyreSelectionForm();
		if(!empty($tyreSelectionForm)) {
			if(isset($_REQUEST['ajax']) && $_REQUEST['ajax']==='tyreSelectionForm') {
				echo CActiveForm::validate($tyreSelection);
				Yii::app()->end();
			}
		}

		$diskSelectionForm = Yii::app()->request->getParam('DiskSelectionForm', array());
		$diskSelection = new DiskSelectionForm();
		if(!empty($diskSelectionForm)) {
			if(isset($_REQUEST['ajax']) && $_REQUEST['ajax']==='diskSelectionForm') {
				echo CActiveForm::validate($diskSelection);
				Yii::app()->end();
			}
		}
		
		$byCarSelectionForm = Yii::app()->request->getParam('ByCarSelectionForm', array());
		$byCarSelection = new ByCarSelectionForm();
		if(!empty($byCarSelectionForm)) {
			if(isset($_REQUEST['ajax']) && $_REQUEST['ajax']==='ByCarSelectionForm') {
				echo CActiveForm::validate($byCarSelection);
				Yii::app()->end();
			}
		}
		
		$filterChain->run();
	}
	

	/**
	 * Функция добавление комментов 
	 */
	protected function addComment(&$model){

		if(isset($_POST['CommentForm'])){
			$commentForm = new CommentForm;
			$commentForm->attributes=$_POST['CommentForm'];
			
			if($commentForm->validate()) {
				Yii::app()->user->setState('CommentForm', null);

				$comment = new Comment;
				$comment->attributes = $_POST['CommentForm'];
				$comment->object_type = L::r_item('CommentType', get_class($model));
				$comment->object_id = $model->id;
				$comment->created = date('Y-m-d H:i:s');
				$comment->rating = 0;
				$comment->status = L::r_item('commentStatus', 'new');
				
				if($parent = Comment::model()->findbyPk((int)$commentForm->parent))
					$parent->append($comment);
				else
					$comment->saveNode();
				
				Yii::app()->user->setFlash('comment',array('text'=>'Спасибо за Ваш комментарий', 'class'=>'error'));
				$this->redirect(Yii::app()->request->requestUri.'#comment-'.$comment->id);
			} else
				Yii::app()->user->setState('CommentForm', $commentForm);

		} else
			Yii::app()->user->setState('CommentForm', null);
	}
	
	/**
	 * Изменения рейтинга
	 */
	protected function updateRating($model) {
		if(Yii::app()->request->isAjaxRequest) {
			$rating = Yii::app()->request->getParam('rating', 0);
			$profile = Profile::model()->findByPk(Yii::app()->user->name);
			if($rating==='inc')
				$rating = $profile->vote_weight;
			elseif($rating==='dec')
				$rating = -1*$profile->vote_weight;

			if($profile->vote_left>0) {
				echo $model->updateRating($rating);

				// Снижаю кол-во оставшихся голосов пользователя
				$profile->vote_left -= 1;
				$profile->save();
			} else {
				// должен возвращаться результат о том что голоса кончились
				echo $model->rating;
			}

			Yii::app()->end();
		}
	}
}